#ifndef _FrostedRefractionMaterial_H_
#define _FrostedRefractionMaterial_H_

#pragma once
#include "RefractionMaterial.h"
class FrostedRefractionMaterial : public RefractionMaterial {
private:
	Double fuzziness;
	int sampleCount;

public:
	FrostedRefractionMaterial(Double ior, Double fuzziness, Float refractionIntensity = 1, int sampleCount = 1);
	FrostedRefractionMaterial(shared_ptr<Material> material, Double ior, Double fuzziness, Float refractionIntensity = 1, int sampleCount = 1);

	void setSampleCount(int sampleCount);

	virtual Color shade(const Scene *scene, const Ray &ray, const IntersectResult &intersect, const TraceState & traceState) const;

	bool isTransparent() const {
		return true;
	}
	Color getTransparentColor(const Scene * scene, const Ray & ray, const IntersectResult &intersect) const;
};

#endif // _FrostedRefractionMaterial_H_